A proliferation of wireless mobile devices and increasing network availability have contributed to a growing demand for “always available” network applications. Such applications, including but not limited to voice over Internet protocol (VOIP), instant messaging, service discovery, and server applications, may be remotely triggered. That is, an “always available” application running in the wireless mobile device may be required to continue execution indefinitely while waiting for a trigger message from an incoming VOIP call, etc.
The term “wireless mobile device” as used herein means a portable communication and/or computing device employing a portable power source such as batteries, solar cells, etc. and including a radio for wireless data communications. Such devices include data-capable cellular telephones, wireless laptop computers, tablet computers, portable wireless games, etc.
Today's wireless mobile devices typically execute user applications using one or more main (“host”) processors. The host processor typically consumes large amounts of power such that host processor activity becomes the limiting factor for wireless mobile device battery runtime. Various schemes have evolved for extending battery runtime, including the evolution of low-power semiconductor devices. One of the most significant battery power-saving techniques is that of “sleep mode operation.” A wireless mobile device enters sleep mode by disabling all or portions of host processor functionality for slices of time during which applications do not require the disabled processor cycles. A host processor is said to enter increasingly “deeper” levels of sleep mode operation as power to the processor is increasingly disabled.
An active application may be allocated slower cycles or no cycles at all while the processor sleeps. Also, sleep mode operation often requires overhead cycles to save pointers, register values, etc. prior to disabling the processor and to retrieve those values upon restarting the processor. Thus, sleep mode operation may result in increased application startup latency and/or run latency for applications executing at the time of entering sleep mode. From a user perspective, battery runtime may be perceived as longer in a more sluggish wireless mobile device and shorter in a snappier device. Careful programming trade-offs may help to optimize performance versus runtime.
Remotely triggered network applications, such as those mentioned above, tend to be latency-sensitive. For example, the ring signal associated with an incoming VOIP call may be delayed while a sleeping processor is powered up, retrieves context, and resumes handling the network stack. Network application programmers may, in some cases, disallow deep levels of sleep mode operation in order to ensure acceptable performance of an application across multiple wireless mobile device platforms. As a consequence, battery drain may be excessive while such applications are simply executing wait states for periods that could last for minutes, hours, or more while waiting for an incoming VOIP call, instant message, etc. In other cases, the wireless networking device may be configured to wake up the host processor upon receipt of any packet, potentially resulting in frequently interrupted sleep states.